Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

code-gen: Simplify switch #2240

Merged
merged 10 commits into from
Dec 18, 2023
Merged

code-gen: Simplify switch #2240

merged 10 commits into from
Dec 18, 2023

Conversation

dweindl
Copy link
Member

@dweindl dweindl commented Dec 15, 2023

Improves model code generation by collapsing cases with identical statements.

I.e.

switch(a)
 case b:
 case c:
  statements;
  break;

instead of

switch(a)
 case b:
  statements;
  break;
 case c:
  statements;
  break;

For my current model of interest, containing many events, this significantly reduces the generated code:

E.g.:

 16K my_model/deltasx.cpp
6,6M my_model_old/deltasx.cpp

Overall, for this model, I got from 204201 LOC down to 7936 LOC (i.e. -96%).

Improves model code generation by collapsing cases with identical statements.

I.e.
```
switch(a)
 case b:
 case c:
  statements;
  break;
```
instead of

```
switch(a)
 case b:
  statements;
  break;
 case c:
  statements;
  break;
```

For my current model of interest, containing many events, this significantly reduces the generated code:

E.g.:
```
 16K my_model/deltasx.cpp
6,6M my_model_old/deltasx.cpp
```

Overall, for this model, I got from 204201 LOC down to 7936 LOC (i.e. -96%).
@dweindl dweindl requested a review from a team as a code owner December 15, 2023 15:17
Copy link

codecov bot commented Dec 15, 2023

Codecov Report

Merging #2240 (b08af98) into develop (a3b1c2b) will increase coverage by 0.00%.
The diff coverage is 100.00%.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff            @@
##           develop    #2240   +/-   ##
========================================
  Coverage    76.64%   76.64%           
========================================
  Files           91       91           
  Lines        15015    15016    +1     
========================================
+ Hits         11508    11509    +1     
  Misses        3507     3507           
Flag Coverage Δ
cpp 73.11% <ø> (ø)
cpp_python 37.08% <ø> (ø)
petab 53.76% <100.00%> (+<0.01%) ⬆️
python 77.97% <100.00%> (+<0.01%) ⬆️
sbmlsuite ?

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Coverage Δ
python/sdist/amici/cxxcodeprinter.py 89.79% <100.00%> (+0.10%) ⬆️

@dweindl dweindl self-assigned this Dec 15, 2023
Copy link
Member

@dilpath dilpath left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice 👍

python/sdist/amici/cxxcodeprinter.py Outdated Show resolved Hide resolved
python/sdist/amici/cxxcodeprinter.py Outdated Show resolved Hide resolved
python/sdist/amici/cxxcodeprinter.py Outdated Show resolved Hide resolved
Copy link
Member

@FFroehlich FFroehlich left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice 👍

dweindl and others added 8 commits December 18, 2023 16:41
Run nightly tests also on python3.12
Ensure event assignments targets are processed in deterministic order.
Otherwise the ordering of state variables may change between subsequent
model imports, which we'd like to avoid.

Closes AMICI-dev#2241.
Previously, importing amici would result in all warnings of the program being hidden, due to `logging.captureWarnings(True)`:

```sh
$ python -c "import warnings; warnings.warn('bla');"
<string>:1: UserWarning: bla
$ python -c "import amici; import warnings; warnings.warn('bla');"
$
```

This can't be the desired default.

Changes:
* Default to not capturing warnings
* If warnings are to be captured, at least handle them by amici loggers

Closes ICB-DCM/pyPESTO#1252
Make solvers and SolverPtr deepcopyable, and fix a segfault when creating `SolverPtr`s from Python.
@dweindl dweindl merged commit 0cc43f9 into AMICI-dev:develop Dec 18, 2023
19 checks passed
@dweindl dweindl deleted the better_switch branch December 18, 2023 17:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants